//package com.central.apps.handler;
//
//import java.time.format.DateTimeFormatter;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//
//import com.central.apps.service.HandlerService;
//import com.central.bizcommon.model.biz.BizObject;
//import com.central.bizcommon.model.biz.CommonModel;
//import com.central.bizcommon.model.biz.CustomEntity;
//import com.central.bizcommon.model.flow.FlowNode;
//import com.central.bizcommon.model.flow.FlowOpinion;
//
//import com.central.common.auth.details.LoginAppUser;
//import com.central.common.util.StringUtil;
//import com.sun.org.apache.xpath.internal.operations.Bool;
//import lombok.Data;
//import org.springframework.web.multipart.MultipartFile;
//
///**
// * @author GUO
// */
//@Data
//public class BaseHandler {
//
//    protected final static DateTimeFormatter DATE_FORMATER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//    protected final static DateTimeFormatter DATETIME_FORMATER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//
//    protected HandlerService handlerService;
//
//    /**
//     * 处理类：保存前验证(××只会在主表保存前验证)
//     *
//     * @param app
//     * @param objName
//     * @param data
//     * @return
//     */
//    public String validateSave(String app, String objName, Map<String, Object> data) throws Exception {
//        return null;
//    }
//
//    /**
//     * 处理类：保存前验证(子表保存前验证)
//     *
//     * @param app
//     * @param objName
//     * @param data
//     * @return
//     */
//    public String validateChildSave(Map<String, List<Map<String, Object>>> childs) throws Exception {
//        return null;
//    }
//
//    /**
//     * 处理类：保存时操作拼装数据之前调用（只会在主表调用，且在保存验证方法之前执行）
//     *
//     * @param app     应用
//     * @param objName 表名
//     * @param data    数据
//     */
//    public void beforeOperateSaveData(String app, String objName, Map<String, Object> data) throws Exception {
//    }
//
//    /**
//     * 处理类：保存前调用(会在主表和子表保存前都调用)
//     *
//     * @param app      应用
//     * @param objName  表名
//     * @param data     数据
//     * @param isUpdate 是否是修改：true为修改；false为新增；
//     */
//    public void beforSave(String app, String objName, Map<String, Object> data, boolean isUpdate) throws Exception {
//    }
//
//    /**
//     * 处理类：保存后调用(会在主表和子表保存后都调用)
//     *
//     * @param app     应用
//     * @param objName 表名
//     * @param data    数据
//     */
//    public void afterSave(String app, String objName, Map<String, Object> data, boolean isUpdate) throws Exception {
//    }
//	
//	/**
//	 * 处理类：
//	 * @param app 应用
//	 * @param commonModel 数据库查询对象的clone对象
//	 * @return 返回最终需要拼接到sql的条件
//	 */
//	public void setExists(String app, BizObject object, Map<String, Object> params, List<String> exists, List<String> NotExists){
//	}
//
//    /**
//     * 生成编号之前用于查询子表是否有app如果没有返回空有就返回Map中即可(会在主表和子表生成编号时都调用)
//     *
//     * @param app
//     * @param objName
//     * @param data
//     * @return
//     */
//    public CustomEntity beforaddBizNum(String app, String objName, Map<String, Object> data) throws Exception {
//
//        return null;
//    }
//
//    /**
//     * 自定义生成单据编号如果返回有值则直接用该值作为编号(会在主表和子表生成编号时都调用)
//     *
//     * @param app
//     * @param objName
//     * @param data
//     * @return
//     */
//    public String addBizNum(String app, String objName, Map<String, Object> data) throws Exception {
//
//        return null;
//    }
//
//
//    /**
//     * 处理类：自定义功能接口调用方法
//     *
//     * @param app    应用
//     * @param type   类型
//     * @param params 参数的集合
//     * @return
//     */
//    public Object operate(String app, String type, Map<String, Object> params) throws Exception {
//        return null;
//    }
//
//    /**
//     * 数据单条查询包装方法
//     *
//     * @param columnName
//     * @param colunmValue
//     * @return
//     */
//    public Object wrapTheMap(String columnName, Object colunmValue, Map<String, Object> map) throws Exception {
//        return null;
//    }
//
//    /**
//     * 处理类：删除前验证(××只会在主表删除前前验证)
//     *
//     * @param app
//     * @param objName
//     * @param id
//     * @return
//     */
//    public String validateDelete(String app, String objName, Long id) throws Exception {
//        return null;
//    }
//
//    /**
//     * 处理类：删除前调用
//     *
//     * @param app     应用
//     * @param objName 表名
//     * @param id      ID
//     */
//    public void beforDelete(String app, String objName, Long id, boolean isLogic) {
//    }
//    
//    /**
//     * 新建主表及子表时添加默认值
//     *
//     * @param app
//     * @return
//     */
//    public void addDefault(String app, String object, Map<String, Object> defaultData) throws Exception {
//    	
//    }
//
//    /**
//     * 处理类：工作流流程变量自定义处理
//     *
//     * @param app
//     * @return
//     */
//    public void addFlowVar(String app, Long id, FlowNode flowNode, FlowOpinion op, Map<String, Object> variables) throws Exception {
//    }
//
//    /**
//     * 处理类：工作流流程执行前自定义处理,如果返回数据数据不为空则不审批流程并提示信息。
//     *
//     * @param app
//     * @param id
//     * @param flowNode
//     * @param op
//     * @return 提示信息
//     */
//    public String beforeExcuteFlow(String app, Long id, FlowNode flowNode, FlowOpinion op) throws Exception {
//        return null;
//    }
//
//    /**
//     * 处理类：工作流流程执行后自定义处理
//     *
//     * @param app
//     * @param id
//     * @param flowNode
//     * @param op
//     * @return
//     */
//    public void afterExcuteFlow(String app, Long id, FlowNode flowNode, FlowOpinion op, String event) throws Exception {
//
//    }
//
//    /**
//     * 处理类：工作流启动之前验证
//     *
//     * @param app
//     * @param id
//     * @param flowNode
//     * @return
//     */
//    public String validateFlowApproval(String app, Long id, FlowNode flowNode) throws Exception {
//        return null;
//    }
//
//    /**
//     * 处理类：工作流流程节点自定义处理人
//     *
//     * @param app
//     * @param id
//     * @param flowNode
//     * @param vars
//     * @return
//     */
//    public String addFlowCandidate(String app, Long id, FlowNode flowNode, Map<String, Object> vars) throws Exception {
//        return null;
//    }
//
//    /**
//     * 处理类：数据限制自定义处理类
//     *
//     * @param app
//     * @return
//     */
//    public String dataRestrictHandle(String app) throws Exception {
//        return null;
//    }
//
//    /**
//     * 处理类：findbyid单条查询后自定义处理
//     *
//     * @param app
//     * @param data
//     * @return
//     */
//    public void afterFindById(String app, Map<String, Object> data) throws Exception {
//    }
//
//    /**
//     * 处理类：findbyMap多条查询后自定义处理
//     * @param app
//     * @param list
//     * @return
//     */
//    public void afterFindByMap(String app,List<Map<String,Object>> list) throws Exception {
//    }
//
//    //泰康执行流程后事件
//    public Map<String, Object> updateWorkFlowData(String id,  Map<String, Object> map) {
//        return  null;
//    }
//
//
//    //导入excel前自定义处理
//    public void updateDataBeforeImportExcel(Map<String, Object> map, String app, String object) {
//
//    }
//
//    /**
//     * 泰康批量导入前处理
//     * @param app
//     * @param table 表名
//     * @param data 需要导入的字表信息，已配置主子表关系
//     * @param mainMap 主表信息
//     * @return
//     */
//    public List<Map<String, Object>> beforeBatchImport(String app, String  table, List<Map<String, Object>> data, Map<String, Object> mainMap) {
//
//        return new ArrayList<>();
//    }
//
//    /**
//     * 泰康批量导入前验证
//     * @param app
//     * @param table
//     * @param mainMap 主表数据
//     * @param handers  导入表格的表头
//     * @return
//     */
//    public String validateBatcheExcelImport(String app, String table, Map<String, Object> mainMap,  List<Map<String,Object>> data) {
//        return null;
//    }
//
//    /**
//     * 设置Excel中的表的列和数据表对应字段
//     * @return
//     */
//    public List<String> mapExcelClonumWithHeads() {
//        return null;
//    }
//
//    /**
//     *
//     * @return
//     */
//    public void addOtherParams(String app,Map<String, Object> params) {
//
//    }
//
//    /**
//     *
//     */
//    public String validExFlow(LoginAppUser loginUser){
//        return null;
//    }
//
//}
